<?php
include("../config.inc.php");
include("../util.php");	
include("../clases.php");	
require_once("../FirePHPCore-0.3.2/lib/FirePHPCore/FirePHP.class.php");

session_start();

if(!$_SESSION["obj_sesion"]->compruebaAcceso("ADME")){		echo "<script language='javascript'>location.href='salir.php'</script>";
		die(); }

switch($_REQUEST["action"]){

/*#######################################################################################################################################################*/
/*########################################################################  GRID  #######################################################################*/
/*#######################################################################################################################################################*/

	case 'grid_users':{

		$alerta = FirePHP::getInstance(true);
		$page = $_GET['page']; // get the requested page
		$limit = $_GET['rows']; // get how many rows we want to have into the grid 
		$sidx = $_GET['sidx']; // get index row - i.e. user click to sort 
		$sord = $_GET['sord']; // get the direction 
		if(!$sidx) $sidx =1; 
		
		// 'Id','Usuario','Intentos','Nombre','Email','Activo'
		$traductor = array("su.id_usuario","su.nombre_usuario","t.tipo","su.intentos","su.nombre","su.email","su.activo");
		$campos = array("id_usuario","nombre_usuario","tipo","intentos","nombre","email","activo");
		
		descodificar_utf8_array($_GET);
		// $result almacena los datos de los usuarios
		$result = consultaSimple("seguridad_usuarios","fecha_baja IS NULL","","COUNT(*) AS count");
		$count = $result['count']; 
		
		if( $count >0 ) { 
			$total_pages = ceil($count/$limit); 
		} else { 
			$total_pages = 0;
		} 
		if ($page > $total_pages) 
			$page=$total_pages; 

		$start = $limit*$page - $limit;
		
		// Tablas
		$table =" seguridad_usuarios su, seguridad_tipos t";
		
		// Where
		$where="su.fecha_baja IS NULL AND su.id_tipo = t.id_tipo";	
		
		// Select
		$select = "su.id_usuario AS id_usuario".formar_select_jqgrid($campos,$traductor);
		
		$result = consultaMultiple($table,$where,"ORDER BY $sidx $sord LIMIT $start , $limit", $select);
		pasar_utf8_array($result);
		
		$responce->page = $page; 
		$responce->total = $total_pages; 
		$responce->records = $count; 
		
		for($i=0;$i<count($result);$i++){
			$responce->rows[$i]['id']=$result[$i]["id_usuario"]; 
			for($x=0;$x<count($campos);$x++)
			
				if ($x == 6) {
					// Cambia activo 1 o 0 por Activado o Desactivado
					if($result[$i][$campos[$x]] == 1)
					{
						$responce->rows[$i]['cell'][]="Activado";
					}else{
					
							$responce->rows[$i]['cell'][]="Desactivado";
						}
										
				} else { 
					$responce->rows[$i]['cell'][]=$result[$i][$campos[$x]];
				}

		}
		
		echo json_encode($responce); 
		break;
	}

/*#######################################################################################################################################################*/
/*##################################################################  FORMULARIO  #######################################################################*/
/*#######################################################################################################################################################*/
	
	// Formulario de usuario
	case 'formUsuario':{

		echo '  
		<script type="text/javascript">		
		$(document).ready(
			
			function inicio(){';
				// Si existe la variable $_REQUEST["id_usuario"] llama a la función ocultar para no mostrar el combobox
				if(isset($_REQUEST["id_usuario"]))
				{
					echo 'ocultar();';
				}
						
			echo ' });
			
		</script>';
		
		// Almacena los datos de los usuarios
		$vector=array();
		
		// Guarda la acción que se realizará
		$_action = "insertar";
		
		// Si existe la variable $_REQUEST["id_usuario"], carga el formulario en modo modificar	
		if(isset($_REQUEST["id_usuario"])){
		
			// La accion pasa a ser modificar
			$_action = "modificar";
			
			// Almacena los datos del usuario que tiene como "id" $_REQUEST["id_usuario"]
			$vector = consultaSimple("seguridad_usuarios","id_usuario=".$_REQUEST["id_usuario"]);
			pasar_utf8_array($vector);
			
		}
		
		// $proveedor almacena los datos de todos los proveedores que tienen fecha_baja igual a NULL
		$proveedor = consultaMultiple('proveedores','fecha_baja IS NULL');
		pasar_utf8_array($proveedor);
		
		$where = "activo=1";
		
		// Comprueba si el usuario es distinto de "Superusuario" 
		if($_SESSION["obj_sesion"]->getTipo() != "Superusuario"){$where .="AND st.id_tipo != 0";}
		
		// $tipos almacena los tipos de ussuario
		$tipos = consultaMultiple("seguridad_tipos st",$where,"ORDER BY tipo");
		pasar_utf8_array($tipos);
		
		echo '<div>
				<fieldset style="width:135%;">
				<legend class="txt_normal"><b>Datos Usuario </b></legend>
				<form id="form_usuario" name="form_usuario">
				<input type="hidden" id="id_usuario" name="id_usuario" value="'.$_REQUEST["id_usuario"].'">
				<table border="0" cellpadding="3" cellspacing="1" width="100%" align="center">
				<tr>
					<td class="txt_normal" align="left" style="width:30% ">Usuario (*)</td>
					<td class="txt_normal" align="left" style="width:30% ">Contrase&ntilde;a (*)</td>
					<td class="txt_normal" align="left" style="width:30% ">Repita la Contrase&ntilde;a (*)</td>
				</tr>
				<tr>
					<td align="left"><input type="text" name="nombre_usuario" class="largo" id="nombre_usuario"  value="'.$vector["nombre_usuario"].'"></td>
					<td align="left"><input type="password" name="password" id="password" size="30" class="largo"  maxlength="50" value=""></td>
					<td align="left"><input type="password" name="password2" id="password2" size="30" class="largo"  maxlength="50" value=""></td>
				</tr>
				<tr>
					<td class="txt_normal" align="left" style="width:30% ">Tipo (*)</td>
					<td class="txt_normal" align="left"><div id="nombre">Nombre</div></td>
					<td class="txt_normal" align="left"><div id="email">E-mail</div></td>
				</tr>
				<tr>
					<td align="left">
						 <select name="id_tipo" id="id_tipo" class="largo" onChange="javascript:ocultar();">
							<option value="-1">Seleccione una opci&oacute;n...</option>';
								// Carga el combobox con los datos del $tipo
								for ($i=0;$i<count($tipos);$i++)
								{
									echo "<option value='".$tipos[$i]["id_tipo"]."'";
									if (isset($_GET["id_usuario"]))
									
										if($tipos[$i]["id_tipo"]==$vector["id_tipo"])
										
											echo " selected ";
											echo '>'.$tipos[$i]["tipo"].'</option>';
										
										
								};
								// Adaptar el campos activo a true o false dependiendo si es 1 o 0
								if ($vector["activo"] == 1){
									$vector["activo"] = "checked = 'checked'";}
									else{
										$vector["activo"] = "";}
						echo '</select>				
					</td>
					<td align="left"><input type="text" name="nombre" id="nombre" class="largo" size="15" maxlength="50" value="'.utf8_decode($vector["nombre"]).'"></td>
					<td align="left"><input type="text" name="email" id="email" size="15" class="largo" maxlength="50" value="'.$vector["email"].'"></td>
				</tr>
				
				<tr>
					<td class="txt_normal" align="left">Activo (*)</td>		
					<td class="txt_normal" align="left"><div id="div_prov" style="visibility:hidden">Proveedor (*)</div></td>	
				</tr>
				<tr>
					<td align="left"><input type="checkbox" name="activo" id="activo" '.$vector["activo"].' ></td>
					<td>									
						<select name="id_proveedor" id="id_proveedor" class="largo" style="visibility:hidden">
							<option value="-1">Seleccione una opci&oacute;n...</option>';
							// Carga el comobobox con los datos de $proveedor
							for ($i=0;$i<count($proveedor);$i++)
							{
								echo "<option value='".$proveedor[$i]["id_proveedor"]."'";
								 
								
									if($proveedor[$i]["id_proveedor"]==$vector["id_empresa"]){
										echo " selected=selected ";
									}
										echo '>'.$proveedor[$i]["nombre"].'</option>';
							};
							echo '</select>					
					</td>
				</tr>
				<tr>
					<td colspan="3" align="center" class="txt_normal">
						<b>Los campos marcados con un asterisco (*) son obligatorios.</b><br>
					</td>
				</tr>
				<tr>
					<td class="txt_normal_neg" style="text-align:center; " colspan="3">
						<div id="contenedor"></div>
					</td>
					<tr>
						<td align="center" colspan="3"><input type="button" value="&nbsp;Aceptar" id="aceptar" style="width:100px;" class="aceptar" onclick="guardar(\''.$_action.'\');" > <input type="button" value="&nbsp;Volver" id="volver" style="width:100px " class="aceptar" onClick="volver_atras();"></td>
					</tr>					
				</tr>
				</table>
				</form>
				</fieldset>
				</div>
				';
		break;
	}

	
/*#######################################################################################################################################################*/
/*################################################### OPERACIONES DE EDICION DE REGISTROS ###############################################################*/
/*#######################################################################################################################################################*/
	
	//Inserta un nuevo usuario
	case 'insertar': {
	
		if(vacio($_REQUEST["nombre_usuario"])){ echo "username"; die(); }

		// Comprobamos si existe ya el nombre de usuario		
		$vector = consultaMultiple("seguridad_usuarios","fecha_baja is NULL and nombre_usuario='".$_REQUEST["nombre_usuario"]."'");
		if (count($vector) > 0){ echo "nombre_usado"; die(); }

		// Comprobamos si el nombre de usuario es el mismo que la password
		if($_REQUEST["nombre_usuario"]==$_REQUEST["password"]){ echo "mal_password"; die(); }
		
		// Comprobamos si las dos passwords son iguales
		if($_REQUEST["password"] != $_REQUEST["password2"]){ echo "password2"; die(); }
		
		// Comprobamos si hay mail
		if(vacio($_REQUEST["email"])){	echo "email"; die();}
		if(!comprobarMail($_REQUEST["email"])){ echo "email";	die();	}
		
		// Comprobamos si hay un tipo seleccionado
		if($_REQUEST["id_tipo"] < 1){ echo "tipo"; die();}
		
		// Comprobamos si hay proveedor seleccionado
		if($_REQUEST['id_proveedor'] == -1 && $_REQUEST["id_tipo"] != 1){ echo "proveedor"; die();}
		
		// Obtiene el siguiente id
		$id_usuario = maxid("seguridad_usuarios","id_usuario");
		
		// Carga el vector con los datos a insertar	
		$vector = array();		
		$vector["id_usuario"] = $id_usuario;
		$vector["id_tipo"] = $_REQUEST["id_tipo"];
		$vector["nombre_usuario"] = $_REQUEST["nombre_usuario"];
		$vector["pass_usuario"] = crypt(md5($_REQUEST["password"]),md5($_REQUEST["password"]));
		$vector["intentos"] = 3;
		$vector["nombre"] = $_REQUEST["nombre"]; 
		$vector["email"] = $_REQUEST["email"];
		$vector["activo"] = $_REQUEST["activo"] == TRUE? 1:0;
		if($_REQUEST["id_tipo"]!="1") $vector['id_empresa'] = $_REQUEST['id_proveedor'];
		insertaBD("seguridad_usuarios",$vector);
				
		echo "OK";
		die();
	};
	
	// Modifica los datos del usuario
	case 'modificar':{
	
		// Comprobamos si nombre_usuario esta en blanco
		if(vacio($_REQUEST["nombre_usuario"])){ echo "nombre_usuario"; die(); }

		// Comprobamos si existe ya el nombre de usuario		
		$vector = consultaMultiple("seguridad_usuarios","fecha_baja is NULL and nombre_usuario='".$_REQUEST["nombre_usuario"]."' AND id_usuario<>'".$_REQUEST["id_usuario"]."'");
		if (count($vector) > 0){ echo "nombre_usado"; die();}

		// Comprobamos si las passwords son iguales
		if($_REQUEST["password"] != $_REQUEST["password2"]){ echo "password2"; die();}
		
		// Comprobamos si el nombre de usuario es igual que la contraseña
		if(!vacio($_REQUEST["password"]) && ($_REQUEST["nombre_usuario"]==$_REQUEST["password"])){ echo "mal_password"; die();}
		
		// Comprobamos el mail
		if(vacio($_REQUEST["email"])){	echo "email"; die();}
		if(!comprobarMail($_REQUEST["email"])){ echo "email";	die();}
		
		// Comprobamos si hay un tipo seleccionado
		if($_REQUEST["id_tipo"]==-1){ echo "tipo"; die();}
		
		// Comprobamos si hay proveedor seleccionado
		if($_REQUEST['id_proveedor'] == -1 && $_REQUEST["id_tipo"] != 1){ echo "proveedor"; die();}


		$vector_anterior = array();
		$vector_anterior = consultaSimple("seguridad_usuarios","id_usuario=".$_REQUEST["id_usuario"]);
		
		// Carga el vector con los datos a modificar		
		$vector = array();
		$vector["nombre_usuario"]=$_REQUEST["nombre_usuario"];
		
		// Encriptación de la contraseña en MD5
		if($_REQUEST["password"]!=""){ $vector["pass_usuario"] = crypt(md5($_REQUEST["password"]),md5($_REQUEST["password"])); }
		
		$vector["id_tipo"]=$_REQUEST["id_tipo"];	
		$vector["nombre_usuario"]=$_REQUEST["nombre_usuario"];
		$vector["nombre"] = $_REQUEST["nombre"]; 
		$vector["email"]=$_REQUEST["email"];
		$vector["activo"] = $_REQUEST["activo"] == TRUE? 1:0;
		if($_REQUEST["id_tipo"]!="1") $vector['id_empresa'] = $_REQUEST['id_proveedor'];		
		modificaBD("seguridad_usuarios",$vector,"id_usuario = ".$_REQUEST["id_usuario"]);
			
		echo "OK";
		die();
	};
	
	// Borra el usuario seleccionado
	case 'borrar':{
		$vector = array();
		$vector["fecha_baja"] = date("Y-m-d H:i:s");				
		modificaBD("seguridad_usuarios",$vector,"id_usuario=".$_REQUEST["id_usuario"]);
		
		break;
	}
	
	// Habilita al usuario
	case 'habilitar_user':
	{
		// Vuelve a poner los intentos a 3
		if(isset($_GET['id_usuario']))modificaBD("seguridad_usuarios",array("activo"=>"1", "intentos"=>"3"),"id_usuario=".$_GET['id_usuario']);
		break;
	}
	
	// Deshabilita al usuario
	case 'deshabilitar_user':
	{	
		// Pone en activo el valor 0
		if(isset($_GET['id_usuario']))modificaBD("seguridad_usuarios",array("activo"=>0),"id_usuario=".$_GET['id_usuario']);
		break;
	}
	
};

?>
